﻿-- =============================================
-- Author:		Rui Miguel Santos
-- Create date: 
-- Description:	Retorna a unidade principal para
-- a qual foi feito o caontrato a partie de uma
-- unidade filho
-- =============================================
CREATE FUNCTION ObterUnidadedeContratoParaUnidade 
(
	-- Add the parameters for the function here
	@IdUnidade bigint
)
RETURNS bigint
AS
BEGIN
	-- Declare the return variable here
	DECLARE @Result bigint;

	WITH UnidadesCTE (IdUnidade, UnidadePai)
		as
		(
			SELECT u.IdUnidade, u.UnidadePai 
			  FROM unidades u 
			 WHERE u.IdUnidade = @IdUnidade
			UNION ALL
			SELECT u.IdUnidade, u.UnidadePai 
  			  FROM unidades u 
				inner join UnidadesCTE cte on u.IdUnidade = cte.UnidadePai 
		)

		SELECT @Result = IdUnidade from UnidadesCTE where UnidadePai is null
	

	-- Return the result of the function
	RETURN @Result

END
